home *** CD-ROM | disk | FTP | other *** search
Text File | 1998-06-19 | 1.2 KB | 53 lines | [TEXT/CWIE] |
- // STL8.cp
- #include <iostream>
- #include <string>
- #include <cstring>
- #include <MacTypes.h>
-
- template<class PascalString>
- class PStrTemp
- {
- PascalString s;
- void MakePString(const char *cString)
- {
- std::size_t length= std::strlen(cString);
- s[0] = length > (sizeof(s) - 1)? (sizeof(s) - 1): length;
- std::strncpy((char *)&s[1], cString, (sizeof(s) - 1));
- };
- public:
- PStrTemp(const char *cString)
- {
- MakePString(cString);
- };
- PStrTemp(const std::string& stdString)
- {
- MakePString(stdString.c_str());
- };
- operator const unsigned char *() const {return s;};
- };
-
- typedef PStrTemp<Str255> ConstStr255;
- typedef PStrTemp<Str63> ConstStr63;
- typedef PStrTemp<Str32> ConstStr32;
- typedef PStrTemp<Str31> ConstStr31;
- typedef PStrTemp<Str27> ConstStr27;
- typedef PStrTemp<Str15> ConstStr15;
-
- using namespace std;
- void PStringFunction(ConstStr255Param stringValue);
- void PStringFunction(ConstStr255Param stringValue)
- {
- string outString((const char *)&stringValue[1], *stringValue);
- cout << outString << endl;
- }
-
- int main()
- {
- char *a = "C string";
- string b = "std::string";
- PStringFunction(ConstStr255(a));
- PStringFunction(ConstStr15(b));
- }
- // C string
- // std::string
-